﻿Imports System.Data.SqlClient

Public Class frmTablesCodes
    Dim szTable As String           'Nom de la table sélectionnée

    Dim myDataset As New DataSet    'Objet DataSet
    Dim myDataTable As DataTable    'Objet DataTable
    Dim myAdapter As New Odbc.OdbcDataAdapter


    Private Sub frmTablesCodes_Activated(sender As Object, e As System.EventArgs) Handles Me.Activated
        LB_TABLES.Focus()
    End Sub

    Private Sub frmTablesCodes_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Me.BackColor = getSocieteColor()
        InitListeTables()
        ' utilisateur autirisé à modifier
        If gUserAcces < 9 Then
            BO_Enregistrer.Enabled = False
        Else
            BO_Enregistrer.Enabled = True
        End If
    End Sub

    'Initialiser la liste des tables
    Private Sub InitListeTables()

        ' effacer la listview
        LB_TABLES.Items.Clear()
        LB_TABLES.Items.Add("Civilités")
        LB_TABLES.Items.Add("Familles articles")
        LB_TABLES.Items.Add("Journaux comptable")
        LB_TABLES.Items.Add("Modes réglement")
        LB_TABLES.Items.Add("TVA")
        LB_TABLES.Items.Add("Types de client")
        LB_TABLES.SelectedIndex = 0

    End Sub

    Private Sub LB_TABLES_DoubleClick(sender As Object, e As System.EventArgs) Handles LB_TABLES.DoubleClick

        ' rendre visible
        lb_NomTable.Visible = True
        DG_Codes.Visible = True

        Select Case LB_TABLES.SelectedIndex
            Case 0
                szTable = "P_QUALITE"
            Case 1
                szTable = "P_FAMILLE"
            Case 2
                szTable = "P_JOURNAUX"
            Case 3
                szTable = "P_MODEREG"
            Case 4
                szTable = "P_TVA"
            Case 5
                szTable = "P_TYPE"
        End Select

        TE_Comment.Text = szTable
        lb_NomTable.Text = "Tables des " & LB_TABLES.SelectedItem

        myDataset.Clear()

        ' effacer le contenu du Datagrid
        DG_Codes.DataSource = Nothing
        DG_Codes.Rows.Clear()
        DG_Codes.Refresh()

        ' définir la table comme source de donnée
        myConnect.ConnectionString = ctDSN_DEVFAC
        myCommand.CommandText = "SELECT * FROM " & szTable & " ORDER BY code"
        myCommand.Connection = myConnect
        myAdapter.SelectCommand() = myCommand

        ' lier le Dataset à la source de donnée
        myAdapter.Fill(myDataset, szTable)
        ' remplir la DataTable par le Dataset
        myDataTable = myDataset.Tables(szTable)
        ' puis l'afficher dans le Datagrid
        DG_Codes.DataSource = myDataTable
        myConnect.Close()

        DG_Codes.DefaultCellStyle.SelectionBackColor = Color.Gray
        DG_Codes.DefaultCellStyle.BackColor = Color.Ivory
        ' rendre visible
        lb_NomTable.Visible = True
        DG_Codes.Visible = True

    End Sub

    Private Sub LB_TABLES_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles LB_TABLES.KeyDown
        ' touche Enter = DoubleClick
        If e.KeyCode = Keys.Enter Then
            LB_TABLES_DoubleClick(sender, e)
        End If
    End Sub

    Private Sub BO_Enregistrer_Click(sender As Object, e As System.EventArgs) Handles BO_Enregistrer.Click

        If IsUserAuthorised(ctCompta) = False Then
            Exit Sub
        End If
        ' générer automatiquement les cmd SQL Insert, Update
        Dim myCmdBuilder As New Odbc.OdbcCommandBuilder(myAdapter)
        Dim i As Integer 'La variable i donne le nombre d'enregistrement

        Try
            'Vérifiez que des modifications ont eu lieu
            If myDataset.HasChanges Then
                'Mise-à-jour des données dans la base de données
                i = myAdapter.Update(myDataset, szTable)
                MsgBox(i & " enregistrement(s) modifié(s)", vbInformation)
            End If
        Catch ex As Exception
            MessageBox.Show("Une erreur est survenue au moment de la mise à jour :" & vbCrLf & ex.Message)

        End Try

    End Sub
End Class